<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<script language="javascript">

// from http://www.webtoolkit.info/javascript-sha256.html
function SHA256(s){
 
	var chrsz   = 8;
	var hexcase = 0;
 
	function safe_add (x, y) {
		var lsw = (x & 0xFFFF) + (y & 0xFFFF);
		var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
		return (msw << 16) | (lsw & 0xFFFF);
	}
 
	function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
	function R (X, n) { return ( X >>> n ); }
	function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
	function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
	function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
	function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
	function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
	function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
 
	function core_sha256 (m, l) {
		var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
		var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
		var W = new Array(64);
		var a, b, c, d, e, f, g, h, i, j;
		var T1, T2;
 
		m[l >> 5] |= 0x80 << (24 - l % 32);
		m[((l + 64 >> 9) << 4) + 15] = l;
 
		for ( var i = 0; i<m.length; i+=16 ) {
			a = HASH[0];
			b = HASH[1];
			c = HASH[2];
			d = HASH[3];
			e = HASH[4];
			f = HASH[5];
			g = HASH[6];
			h = HASH[7];
 
			for ( var j = 0; j<64; j++) {
				if (j < 16) W[j] = m[j + i];
				else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
 
				T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
				T2 = safe_add(Sigma0256(a), Maj(a, b, c));
 
				h = g;
				g = f;
				f = e;
				e = safe_add(d, T1);
				d = c;
				c = b;
				b = a;
				a = safe_add(T1, T2);
			}
 
			HASH[0] = safe_add(a, HASH[0]);
			HASH[1] = safe_add(b, HASH[1]);
			HASH[2] = safe_add(c, HASH[2]);
			HASH[3] = safe_add(d, HASH[3]);
			HASH[4] = safe_add(e, HASH[4]);
			HASH[5] = safe_add(f, HASH[5]);
			HASH[6] = safe_add(g, HASH[6]);
			HASH[7] = safe_add(h, HASH[7]);
		}
		return HASH;
	}
 
	function str2binb (str) {
		var bin = Array();
		var mask = (1 << chrsz) - 1;
		for(var i = 0; i < str.length * chrsz; i += chrsz) {
			bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
		}
		return bin;
	}
 
	function Utf8Encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		//document.write(string+"<hr/>");
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	}
 
	function binb2hex (binarray) {
		var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
		var str = "";
		for(var i = 0; i < binarray.length * 4; i++) {
			str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
			hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);
		}
		return str;
	}
 
	s = Utf8Encode(s);
	//document.write(s);
	return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
 
}

function getTime()
{
	d = new Date();
	str = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + ":" + d.getMilliseconds();
	return str;
}
function makeArray(arr)
{
//	symbol = 33 ~ 47, 58 ~ 64, 91 ~ 96, 123 ~ 126
//	number = 48 ~ 57
//	lowercase = 97 ~ 122
//	uppercase = 65 ~ 90
	legal = {
		lowercase: 'abcdefghijklmnopqrstuvwxyz' ,
		UPPERCASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ,
		numbers  : '0123456789' ,
		symbols  : '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
	};
	//arr = new Array('lowercase', 'UPPERCASE', 'numbers', 'symbols');
	ss = "";
	for (i = 0; i < arr.length; i++)
	{
		if (legal.hasOwnProperty(arr[i])) {
			ss += legal[arr[i]];
		}
	}
	return ss;
}

function getRandom() {
	var random = Math.random();
	document.getElementById("randomness").value += "Current time is " + getTime() +"\n" + "Math random says: " + random;	
}

function load()
{	
	getRandom();
}

var cursorX;
var cursorY;
document.onkeypress = function (e) {
    document.getElementById("randomness").value +="\nkeypress at time " + getTime();//MouseX is textbox
}
document.onmousemove = function(e){
    cursorX = e.pageX; cursorY=e.pageY;
    document.getElementById("randomness").value +="\nmouse moved to("+ cursorX + "," + cursorY+") at time " + getTime();//MouseX is textbox
}
function generate()
{
	getRandom(); // ensure that we update randomness even if not moving mouse
	var s = document.getElementById("randomness").value;
	
	var s = SHA256(s);
	//'lowercase', 'UPPERCASE', 'numbers', 'symbols'
	var legalStrLower = makeArray(['lowercase']);
	var legalStrUpper = makeArray(['lowercase', 'UPPERCASE']);
	var legalStrNumber = makeArray(['lowercase', 'UPPERCASE', 'numbers']);
	var legalStrSymbols = makeArray(['lowercase', 'UPPERCASE', 'numbers', 'symbols']);
	var lowerPasswd   = "";
	var upperPasswd   = "";
	var numPasswd     = "";
	var symbolsPasswd = "";
	var xkcdPasswd    = "";

	var decodeChar = function(c, legalStr) {
		var c = legalStr.charAt(val % legalStr.length);
		return c;
	}
	
	for (i = 0; i < s.length; i = i + 2)
	{
		var val = parseInt(s.substring(i, i + 2), 16);
		if (isNaN(val)) continue;
		lowerPasswd += decodeChar(s, legalStrLower);
		upperPasswd += decodeChar(s, legalStrUpper);
		numPasswd += decodeChar(s, legalStrNumber);
		symbolsPasswd += decodeChar(s, legalStrSymbols);
	}
	if (!/[A-Z]/.test(upperPasswd) || 
		!(/[A-Z]/.test(numPasswd) && /[0-9]/.test(numPasswd)) || 
		!(/[A-Z]/.test(symbolsPasswd) && /[0-9]/.test(symbolsPasswd) && /\W/.test(symbolsPasswd))) {
		getRandom();
		generate();
		return;
	}
	var commonWordsLength = words.length;
	var bits = commonWordsLength.toString().length;
	var phraseLength = 4;
	while(phraseLength--) {
		var pass = phraseLength * bits;
		var val = parseInt(s.substring(pass, pass + bits), 16);
		
		xkcdPasswd += words[val % commonWordsLength];
		if (phraseLength !== 0) {
			xkcdPasswd += ' ';
		}
	}
	document.getElementById("lowercase_passwd").value = lowerPasswd;
	document.getElementById("uppercase_passwd").value = upperPasswd;
	document.getElementById("numbers_passwd").value = numPasswd;
	document.getElementById("symbols_passwd").value = symbolsPasswd;
	document.getElementById("xkcd_passwd").value = xkcdPasswd;
	//alert(str);
}
</script>

<body onload = "load()">

<a href="https://github.com/dglittle/password-generator">
    <img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>

<form id="form1" >
<br/>
<table>
	<tr>
		<td>lowercase</td>
		<td><input type="text" id="lowercase_passwd" size="40" /></td>
	</tr>
	<tr>
		<td>UPPERCASE</td>
		<td><input type="text" id="uppercase_passwd" size="40" /></td>
	</tr>
	<tr>
		<td>num6ers</td>
		<td><input type="text" id="numbers_passwd" size="40" /></td>
	</tr>
	<tr>
		<td>$y^^bo)$</td>
		<td><input type="text" id="symbols_passwd" size="40" /></td>
	</tr>
	<tr>
		<td>xkcd</td>
		<td><input type="text" id="xkcd_passwd" size="40" /></td>
	</tr>
	<tr>
		<td colspan="2">
			<input type="button" value="generate" onclick="generate()" />
		</td>
	</tr>
</table>
<br/>
<textarea id="randomness" readonly style="width:700px; height:500px; vertical-align:text-top;"></textarea>
<br/>
<script type="text/javascript">
// https://github.com/psobko/Common-English-Nouns
var words = ['aardvark',
	'abyssinian',
	'accelerator',
	'accordion',
	'account',
	'accountant',
	'acknowledgment',
	'acoustic',
	'acrylic',
	'act',
	'action',
	'active',
	'activity',
	'actor',
	'actress',
	'adapter',
	'addition',
	'address',
	'adjustment',
	'adult',
	'advantage',
	'advertisement',
	'advice',
	'afghanistan',
	'africa',
	'aftermath',
	'afternoon',
	'aftershave',
	'afterthought',
	'age',
	'agenda',
	'agreement',
	'air',
	'airbus',
	'airmail',
	'airplane',
	'airport',
	'airship',
	'alarm',
	'albatross',
	'alcohol',
	'algebra',
	'algeria',
	'alibi',
	'alley',
	'alligator',
	'alloy',
	'almanac',
	'alphabet',
	'alto',
	'aluminium',
	'aluminum',
	'ambulance',
	'america',
	'amount',
	'amusement',
	'anatomy',
	'anethesiologist',
	'anger',
	'angle',
	'angora',
	'animal',
	'anime',
	'ankle',
	'answer',
	'ant',
	'antarctica',
	'anteater',
	'antelope',
	'anthony',
	'anthropology',
	'apartment',
	'apology',
	'apparatus',
	'apparel',
	'appeal',
	'appendix',
	'apple',
	'appliance',
	'approval',
	'april',
	'aquarius',
	'arch',
	'archaeology',
	'archeology',
	'archer',
	'architecture',
	'area',
	'argentina',
	'argument',
	'aries',
	'arithmetic',
	'arm',
	'armadillo',
	'armchair',
	'armenian',
	'army',
	'arrow',
	'art',
	'ash',
	'ashtray',
	'asia',
	'asparagus',
	'asphalt',
	'asterisk',
	'astronomy',
	'athlete',
	'atm',
	'atom',
	'attack',
	'attempt',
	'attention',
	'attic',
	'attraction',
	'august',
	'aunt',
	'australia',
	'australian',
	'author',
	'authorisation',
	'authority',
	'authorization',
	'avenue',
	'babies',
	'baboon',
	'baby',
	'back',
	'backbone',
	'bacon',
	'badge',
	'badger',
	'bag',
	'bagel',
	'bagpipe',
	'bail',
	'bait',
	'baker',
	'bakery',
	'balance',
	'balinese',
	'ball',
	'balloon',
	'bamboo',
	'banana',
	'band',
	'bandana',
	'bangladesh',
	'bangle',
	'banjo',
	'bank',
	'bankbook',
	'banker',
	'bar',
	'barbara',
	'barber',
	'barge',
	'baritone',
	'barometer',
	'base',
	'baseball',
	'basement',
	'basin',
	'basket',
	'basketball',
	'bass',
	'bassoon',
	'bat',
	'bath',
	'bathroom',
	'bathtub',
	'battery',
	'battle',
	'bay',
	'beach',
	'bead',
	'beam',
	'bean',
	'bear',
	'beard',
	'beast',
	'beat',
	'beautician',
	'beauty',
	'beaver',
	'bed',
	'bedroom',
	'bee',
	'beech',
	'beef',
	'beer',
	'beet',
	'beetle',
	'beggar',
	'beginner',
	'begonia',
	'behavior',
	'belgian',
	'belief',
	'believe',
	'bell',
	'belt',
	'bench',
	'bengal',
	'beret',
	'berry',
	'bestseller',
	'betty',
	'bibliography',
	'bicycle',
	'bike',
	'bill',
	'billboard',
	'biology',
	'biplane',
	'birch',
	'bird',
	'birth',
	'birthday',
	'bit',
	'bite',
	'black',
	'bladder',
	'blade',
	'blanket',
	'blinker',
	'blizzard',
	'block',
	'blood',
	'blouse',
	'blow',
	'blowgun',
	'blue',
	'board',
	'boat',
	'bobcat',
	'body',
	'bolt',
	'bomb',
	'bomber',
	'bone',
	'bongo',
	'bonsai',
	'book',
	'bookcase',
	'booklet',
	'boot',
	'border',
	'botany',
	'bottle',
	'bottom',
	'boundary',
	'bow',
	'bowl',
	'bowling',
	'box',
	'boy',
	'bra',
	'brace',
	'bracket',
	'brain',
	'brake',
	'branch',
	'brand',
	'brandy',
	'brass',
	'brazil',
	'bread',
	'break',
	'breakfast',
	'breath',
	'brian',
	'brick',
	'bridge',
	'british',
	'broccoli',
	'brochure',
	'broker',
	'bronze',
	'brother',
	'brother',
	'in',
	'law',
	'brow',
	'brown',
	'brush',
	'bubble',
	'bucket',
	'budget',
	'buffer',
	'buffet',
	'bugle',
	'building',
	'bulb',
	'bull',
	'bulldozer',
	'bumper',
	'bun',
	'burglar',
	'burma',
	'burn',
	'burst',
	'bus',
	'bush',
	'business',
	'butane',
	'butcher',
	'butter',
	'button',
	'buzzard',
	'cabbage',
	'cabinet',
	'cable',
	'cactus',
	'cafe',
	'cake',
	'calculator',
	'calculus',
	'calendar',
	'calf',
	'call',
	'camel',
	'camera',
	'camp',
	'can',
	'canada',
	'canadian',
	'cancer',
	'candle',
	'cannon',
	'canoe',
	'canvas',
	'cap',
	'capital',
	'cappelletti',
	'capricorn',
	'captain',
	'caption',
	'car',
	'caravan',
	'carbon',
	'card',
	'cardboard',
	'cardigan',
	'care',
	'carnation',
	'carol',
	'carp',
	'carpenter',
	'carriage',
	'carrot',
	'cart',
	'cartoon',
	'case',
	'cast',
	'castanet',
	'cat',
	'catamaran',
	'caterpillar',
	'cathedral',
	'catsup',
	'cattle',
	'cauliflower',
	'cause',
	'caution',
	'cave',
	'c',
	'clamp',
	'cd',
	'ceiling',
	'celery',
	'celeste',
	'cell',
	'cellar',
	'cello',
	'celsius',
	'cement',
	'cemetery',
	'cent',
	'centimeter',
	'century',
	'ceramic',
	'cereal',
	'certification',
	'chain',
	'chair',
	'chalk',
	'chance',
	'change',
	'channel',
	'character',
	'chard',
	'charles',
	'chauffeur',
	'check',
	'cheek',
	'cheese',
	'cheetah',
	'chef',
	'chemistry',
	'cheque',
	'cherries',
	'cherry',
	'chess',
	'chest',
	'chick',
	'chicken',
	'chicory',
	'chief',
	'child',
	'children',
	'chill',
	'chime',
	'chimpanzee',
	'chin',
	'china',
	'chinese',
	'chive',
	'chocolate',
	'chord',
	'christmas',
	'christopher',
	'chronometer',
	'church',
	'cicada',
	'cinema',
	'circle',
	'circulation',
	'cirrus',
	'citizenship',
	'city',
	'clam',
	'clarinet',
	'class',
	'claus',
	'clave',
	'clef',
	'clerk',
	'click',
	'client',
	'climb',
	'clipper',
	'cloakroom',
	'clock',
	'close',
	'closet',
	'cloth',
	'cloud',
	'cloudy',
	'clover',
	'club',
	'clutch',
	'coach',
	'coal',
	'coast',
	'coat',
	'cobweb',
	'cockroach',
	'cocktail',
	'cocoa',
	'cod',
	'coffee',
	'coil',
	'coin',
	'coke',
	'cold',
	'collar',
	'college',
	'collision',
	'colombia',
	'colon',
	'colony',
	'color',
	'colt',
	'column',
	'columnist',
	'comb',
	'comfort',
	'comic',
	'comma',
	'command',
	'commission',
	'committee',
	'community',
	'company',
	'comparison',
	'competition',
	'competitor',
	'composer',
	'composition',
	'computer',
	'condition',
	'condor',
	'cone',
	'confirmation',
	'conga',
	'congo',
	'conifer',
	'connection',
	'consonant',
	'continent',
	'control',
	'cook',
	'cooking',
	'copper',
	'copy',
	'copyright',
	'cord',
	'cork',
	'cormorant',
	'corn',
	'cornet',
	'correspondent',
	'cost',
	'cotton',
	'couch',
	'cougar',
	'cough',
	'country',
	'course',
	'court',
	'cousin',
	'cover',
	'cow',
	'cowbell',
	'crab',
	'crack',
	'cracker',
	'craftsman',
	'crate',
	'crawdad',
	'crayfish',
	'crayon',
	'cream',
	'creator',
	'creature',
	'credit',
	'creditor',
	'creek',
	'crib',
	'cricket',
	'crime',
	'criminal',
	'crocodile',
	'crocus',
	'croissant',
	'crook',
	'crop',
	'cross',
	'crow',
	'crowd',
	'crown',
	'crush',
	'cry',
	'cub',
	'cuban',
	'cucumber',
	'cultivator',
	'cup',
	'cupboard',
	'cupcake',
	'curler',
	'currency',
	'current',
	'curtain',
	'curve',
	'cushion',
	'custard',
	'customer',
	'cut',
	'cuticle',
	'cycle',
	'cyclone',
	'cylinder',
	'cymbal',
	'dad',
	'daffodil',
	'dahlia',
	'daisy',
	'damage',
	'dance',
	'dancer',
	'danger',
	'daniel',
	'dash',
	'dashboard',
	'database',
	'date',
	'daughter',
	'david',
	'day',
	'dead',
	'deadline',
	'deal',
	'death',
	'deborah',
	'debt',
	'debtor',
	'decade',
	'december',
	'decimal',
	'decision',
	'decrease',
	'dedication',
	'deer',
	'defense',
	'deficit',
	'degree',
	'delete',
	'delivery',
	'den',
	'denim',
	'dentist',
	'deodorant',
	'department',
	'deposit',
	'description',
	'desert',
	'design',
	'desire',
	'desk',
	'dessert',
	'destruction',
	'detail',
	'detective',
	'development',
	'dew',
	'diamond',
	'diaphragm',
	'dibble',
	'dictionary',
	'dietician',
	'difference',
	'digestion',
	'digger',
	'digital',
	'dill',
	'dime',
	'dimple',
	'dinghy',
	'dinner',
	'dinosaur',
	'diploma',
	'dipstick',
	'direction',
	'dirt',
	'disadvantage',
	'discovery',
	'discussion',
	'disease',
	'disgust',
	'dish',
	'distance',
	'distribution',
	'distributor',
	'diving',
	'division',
	'divorced',
	'dock',
	'doctor',
	'dog',
	'dogsled',
	'doll',
	'dollar',
	'dolphin',
	'domain',
	'donald',
	'donkey',
	'donna',
	'door',
	'dorothy',
	'double',
	'doubt',
	'downtown',
	'dragon',
	'dragonfly',
	'drain',
	'drake',
	'drama',
	'draw',
	'drawbridge',
	'drawer',
	'dream',
	'dredger',
	'dress',
	'dresser',
	'dressing',
	'drill',
	'drink',
	'drive',
	'driver',
	'driving',
	'drizzle',
	'drop',
	'drug',
	'drum',
	'dry',
	'dryer',
	'duck',
	'duckling',
	'dugout',
	'dungeon',
	'dust',
	'eagle',
	'ear',
	'earth',
	'earthquake',
	'ease',
	'east',
	'edge',
	'edger',
	'editor',
	'editorial',
	'education',
	'edward',
	'eel',
	'effect',
	'egg',
	'eggnog',
	'eggplant',
	'egypt',
	'eight',
	'elbow',
	'element',
	'elephant',
	'elizabeth',
	'ellipse',
	'emery',
	'employee',
	'employer',
	'encyclopedia',
	'end',
	'enemy',
	'energy',
	'engine',
	'engineer',
	'engineering',
	'english',
	'enquiry',
	'entrance',
	'environment',
	'epoch',
	'epoxy',
	'equinox',
	'equipment',
	'era',
	'error',
	'estimate',
	'ethernet',
	'ethiopia',
	'euphonium',
	'europe',
	'evening',
	'event',
	'examination',
	'example',
	'exchange',
	'exclamation',
	'exhaust',
	'ex',
	'husband',
	'existence',
	'expansion',
	'experience',
	'expert',
	'explanation',
	'ex',
	'wife',
	'eye',
	'eyebrow',
	'eyelash',
	'eyeliner',
	'face',
	'facilities',
	'fact',
	'factory',
	'fahrenheit',
	'fairies',
	'fall',
	'family',
	'fan',
	'fang',
	'farm',
	'farmer',
	'fat',
	'father',
	'faucet',
	'fear',
	'feast',
	'feather',
	'feature',
	'february',
	'fedelini',
	'feedback',
	'feeling',
	'feet',
	'felony',
	'female',
	'fender',
	'ferry',
	'ferryboat',
	'fertilizer',
	'fiber',
	'fiberglass',
	'fibre',
	'fiction',
	'field',
	'fifth',
	'fight',
	'fighter',
	'file',
	'find',
	'fine',
	'finger',
	'fir',
	'fire',
	'fired',
	'fireman',
	'fireplace',
	'firewall',
	'fish',
	'fisherman',
	'flag',
	'flame',
	'flare',
	'flat',
	'flavor',
	'flax',
	'flesh',
	'flight',
	'flock',
	'flood',
	'floor',
	'flower',
	'flugelhorn',
	'flute',
	'fly',
	'foam',
	'fog',
	'fold',
	'font',
	'food',
	'foot',
	'football',
	'footnote',
	'force',
	'forecast',
	'forehead',
	'forest',
	'forgery',
	'fork',
	'form',
	'format',
	'fortnight',
	'foundation',
	'fountain',
	'fowl',
	'fox',
	'foxglove',
	'fragrance',
	'frame',
	'france',
	'freckle',
	'freeze',
	'freezer',
	'freighter',
	'french',
	'freon',
	'friction',
	'friday',
	'fridge',
	'friend',
	'frog',
	'front',
	'frost',
	'frown',
	'fruit',
	'fuel',
	'fur',
	'furniture',
	'galley',
	'gallon',
	'game',
	'gander',
	'garage',
	'garden',
	'garlic',
	'gas',
	'gasoline',
	'gate',
	'gateway',
	'gauge',
	'gazelle',
	'gear',
	'gearshift',
	'geese',
	'gemini',
	'gender',
	'geography',
	'geology',
	'geometry',
	'george',
	'geranium',
	'german',
	'germany',
	'ghana',
	'ghost',
	'giant',
	'giraffe',
	'girdle',
	'girl',
	'gladiolus',
	'glass',
	'glider',
	'gliding',
	'glockenspiel',
	'glove',
	'glue',
	'goal',
	'goat',
	'gold',
	'goldfish',
	'golf',
	'gondola',
	'gong',
	'goose',
	'gorilla',
	'gosling',
	'government',
	'governor',
	'grade',
	'grain',
	'gram',
	'granddaughter',
	'grandfather',
	'grandmother',
	'grandson',
	'grape',
	'graphic',
	'grass',
	'grasshopper',
	'gray',
	'grease',
	'greece',
	'greek',
	'green',
	'grenade',
	'grey',
	'grill',
	'grip',
	'ground',
	'group',
	'grouse',
	'growth',
	'guarantee',
	'guatemalan',
	'guide',
	'guilty',
	'guitar',
	'gum',
	'gun',
	'gym',
	'gymnast',
	'hacksaw',
	'hail',
	'hair',
	'haircut',
	'halibut',
	'hall',
	'hallway',
	'hamburger',
	'hammer',
	'hamster',
	'hand',
	'handball',
	'handicap',
	'handle',
	'handsaw',
	'harbor',
	'hardboard',
	'hardcover',
	'hardhat',
	'hardware',
	'harmonica',
	'harmony',
	'harp',
	'hat',
	'hate',
	'hawk',
	'head',
	'headlight',
	'headline',
	'health',
	'hearing',
	'heart',
	'heat',
	'heaven',
	'hedge',
	'height',
	'helen',
	'helicopter',
	'helium',
	'hell',
	'helmet',
	'help',
	'hemp',
	'hen',
	'heron',
	'herring',
	'hexagon',
	'hill',
	'himalayan',
	'hip',
	'hippopotamus',
	'history',
	'hobbies',
	'hockey',
	'hoe',
	'hole',
	'holiday',
	'home',
	'honey',
	'hood',
	'hook',
	'hope',
	'horn',
	'horse',
	'hose',
	'hospital',
	'hot',
	'hour',
	'hourglass',
	'house',
	'hovercraft',
	'hub',
	'hubcap',
	'humidity',
	'humor',
	'hurricane',
	'hyacinth',
	'hydrant',
	'hydrofoil',
	'hydrogen',
	'hyena',
	'hygienic',
	'ice',
	'icebreaker',
	'icicle',
	'icon',
	'idea',
	'ikebana',
	'illegal',
	'imprisonment',
	'improvement',
	'impulse',
	'inch',
	'income',
	'increase',
	'index',
	'india',
	'indonesia',
	'industry',
	'ink',
	'innocent',
	'input',
	'insect',
	'instruction',
	'instrument',
	'insulation',
	'insurance',
	'interactive',
	'interest',
	'internet',
	'interviewer',
	'intestine',
	'invention',
	'inventory',
	'invoice',
	'iran',
	'iraq',
	'iris',
	'iron',
	'island',
	'israel',
	'italian',
	'italy',
	'jacket',
	'jaguar',
	'jail',
	'jam',
	'james',
	'january',
	'japan',
	'japanese',
	'jar',
	'jasmine',
	'jason',
	'jaw',
	'jeans',
	'jeep',
	'jeff',
	'jelly',
	'jellyfish',
	'jennifer',
	'jet',
	'jewel',
	'jogging',
	'john',
	'join',
	'joke',
	'joseph',
	'journey',
	'judge',
	'judo',
	'juice',
	'july',
	'jumbo',
	'jump',
	'jumper',
	'june',
	'jury',
	'justice',
	'jute',
	'kale',
	'kamikaze',
	'kangaroo',
	'karate',
	'karen',
	'kayak',
	'kendo',
	'kenneth',
	'kenya',
	'ketchup',
	'kettle',
	'kettledrum',
	'kevin',
	'key',
	'keyboard',
	'keyboarding',
	'kick',
	'kidney',
	'kilogram',
	'kilometer',
	'kimberly',
	'kiss',
	'kitchen',
	'kite',
	'kitten',
	'kitty',
	'knee',
	'knickers',
	'knife',
	'knight',
	'knot',
	'knowledge',
	'kohlrabi',
	'korean',
	'laborer',
	'lace',
	'ladybug',
	'lake',
	'lamb',
	'lamp',
	'lan',
	'land',
	'landmine',
	'language',
	'larch',
	'lasagna',
	'latency',
	'latex',
	'lathe',
	'laugh',
	'laundry',
	'laura',
	'law',
	'lawyer',
	'layer',
	'lead',
	'leaf',
	'learning',
	'leather',
	'leek',
	'leg',
	'legal',
	'lemonade',
	'lentil',
	'leo',
	'leopard',
	'letter',
	'lettuce',
	'level',
	'libra',
	'library',
	'license',
	'lier',
	'lift',
	'light',
	'lightning',
	'lilac',
	'lily',
	'limit',
	'linda',
	'line',
	'linen',
	'link',
	'lion',
	'lip',
	'lipstick',
	'liquid',
	'liquor',
	'lisa',
	'list',
	'literature',
	'litter',
	'liver',
	'lizard',
	'llama',
	'loaf',
	'loan',
	'lobster',
	'lock',
	'locket',
	'locust',
	'look',
	'loss',
	'lotion',
	'love',
	'low',
	'lumber',
	'lunch',
	'lunchroom',
	'lung',
	'lunge',
	'lute',
	'luttuce',
	'lycra',
	'lynx',
	'lyocell',
	'lyre',
	'lyric',
	'macaroni',
	'machine',
	'macrame',
	'magazine',
	'magic',
	'magician',
	'maid',
	'mail',
	'mailbox',
	'mailman',
	'makeup',
	'malaysia',
	'male',
	'mall',
	'mallet',
	'man',
	'manager',
	'mandolin',
	'manicure',
	'manx',
	'map',
	'maple',
	'maraca',
	'marble',
	'march',
	'margaret',
	'margin',
	'maria',
	'marimba',
	'mark',
	'mark',
	'market',
	'married',
	'mary',
	'mascara',
	'mask',
	'mass',
	'match',
	'math',
	'mattock',
	'may',
	'mayonnaise',
	'meal',
	'measure',
	'meat',
	'mechanic',
	'medicine',
	'meeting',
	'melody',
	'memory',
	'men',
	'menu',
	'mercury',
	'message',
	'metal',
	'meteorology',
	'meter',
	'methane',
	'mexican',
	'mexico',
	'mice',
	'michael',
	'michelle',
	'microwave',
	'middle',
	'mile',
	'milk',
	'milkshake',
	'millennium',
	'millimeter',
	'millisecond',
	'mimosa',
	'mind',
	'mine',
	'minibus',
	'minister',
	'mint',
	'minute',
	'mirror',
	'missile',
	'mist',
	'mistake',
	'mitten',
	'moat',
	'modem',
	'mole',
	'mom',
	'monday',
	'money',
	'monkey',
	'month',
	'moon',
	'morning',
	'morocco',
	'mosque',
	'mosquito',
	'mother',
	'motion',
	'motorboat',
	'motorcycle',
	'mountain',
	'mouse',
	'moustache',
	'mouth',
	'move',
	'multimedia',
	'muscle',
	'museum',
	'music',
	'musician',
	'mustard',
	'myanmar',
	'nail',
	'name',
	'nancy',
	'napkin',
	'narcissus',
	'nation',
	'neck',
	'need',
	'needle',
	'neon',
	'nepal',
	'nephew',
	'nerve',
	'nest',
	'net',
	'network',
	'news',
	'newsprint',
	'newsstand',
	'nic',
	'nickel',
	'niece',
	'nigeria',
	'night',
	'nitrogen',
	'node',
	'noise',
	'noodle',
	'north',
	'north',
	'america',
	'north',
	'korea',
	'norwegian',
	'nose',
	'note',
	'notebook',
	'notify',
	'novel',
	'november',
	'number',
	'numeric',
	'nurse',
	'nut',
	'nylon',
	'oak',
	'oatmeal',
	'objective',
	'oboe',
	'observation',
	'occupation',
	'ocean',
	'ocelot',
	'octagon',
	'octave',
	'october',
	'octopus',
	'odometer',
	'offence',
	'offer',
	'office',
	'oil',
	'okra',
	'olive',
	'onion',
	'open',
	'opera',
	'operation',
	'ophthalmologist',
	'opinion',
	'option',
	'orange',
	'orchestra',
	'orchid',
	'order',
	'organ',
	'organisation',
	'organization',
	'ornament',
	'ostrich',
	'otter',
	'ounce',
	'output',
	'outrigger',
	'oval',
	'oven',
	'overcoat',
	'owl',
	'owner',
	'ox',
	'oxygen',
	'oyster',
	'package',
	'packet',
	'page',
	'pail',
	'pain',
	'paint',
	'pair',
	'pajama',
	'pakistan',
	'palm',
	'pamphlet',
	'pan',
	'pancake',
	'pancreas',
	'panda',
	'pansy',
	'panther',
	'panties',
	'pantry',
	'pants',
	'panty',
	'pantyhose',
	'paper',
	'paperback',
	'parade',
	'parallelogram',
	'parcel',
	'parent',
	'parentheses',
	'park',
	'parrot',
	'parsnip',
	'part',
	'particle',
	'partner',
	'partridge',
	'party',
	'passbook',
	'passenger',
	'passive',
	'pasta',
	'paste',
	'pastor',
	'pastry',
	'patch',
	'path',
	'patient',
	'patio',
	'patricia',
	'paul',
	'payment',
	'pea',
	'peace',
	'peak',
	'peanut',
	'pear',
	'pedestrian',
	'pediatrician',
	'peen',
	'pelican',
	'pen',
	'penalty',
	'pencil',
	'pendulum',
	'pentagon',
	'peony',
	'pepper',
	'perch',
	'perfume',
	'period',
	'periodical',
	'peripheral',
	'permission',
	'persian',
	'person',
	'peru',
	'pest',
	'pet',
	'pharmacist',
	'pheasant',
	'philippines',
	'philosophy',
	'phone',
	'physician',
	'piano',
	'piccolo',
	'pickle',
	'picture',
	'pie',
	'pig',
	'pigeon',
	'pike',
	'pillow',
	'pilot',
	'pimple',
	'pin',
	'pine',
	'ping',
	'pink',
	'pint',
	'pipe',
	'pisces',
	'pizza',
	'place',
	'plain',
	'plane',
	'planet',
	'plant',
	'plantation',
	'plaster',
	'plasterboard',
	'plastic',
	'plate',
	'platinum',
	'play',
	'playground',
	'playroom',
	'pleasure',
	'plier',
	'plot',
	'plough',
	'plow',
	'plywood',
	'pocket',
	'poet',
	'point',
	'poison',
	'poland',
	'police',
	'policeman',
	'polish',
	'politician',
	'pollution',
	'polo',
	'polyester',
	'pond',
	'popcorn',
	'poppy',
	'population',
	'porch',
	'porcupine',
	'port',
	'porter',
	'position',
	'possibility',
	'postage',
	'postbox',
	'pot',
	'potato',
	'poultry',
	'pound',
	'powder',
	'power',
	'precipitation',
	'preface',
	'prepared',
	'pressure',
	'price',
	'priest',
	'print',
	'printer',
	'prison',
	'probation',
	'process',
	'processing',
	'produce',
	'product',
	'production',
	'professor',
	'profit',
	'promotion',
	'propane',
	'property',
	'prose',
	'prosecution',
	'protest',
	'protocol',
	'pruner',
	'psychiatrist',
	'psychology',
	'ptarmigan',
	'puffin',
	'pull',
	'puma',
	'pump',
	'pumpkin',
	'punch',
	'punishment',
	'puppy',
	'purchase',
	'purple',
	'purpose',
	'push',
	'pvc',
	'pyjama',
	'pyramid',
	'quail',
	'quality',
	'quart',
	'quarter',
	'quartz',
	'queen',
	'question',
	'quicksand',
	'quiet',
	'quill',
	'quilt',
	'quince',
	'quit',
	'quiver',
	'quotation',
	'rabbi',
	'rabbit',
	'racing',
	'radar',
	'radiator',
	'radio',
	'radish',
	'raft',
	'rail',
	'railway',
	'rain',
	'rainbow',
	'raincoat',
	'rainstorm',
	'rake',
	'ramie',
	'random',
	'range',
	'rat',
	'rate',
	'raven',
	'ravioli',
	'ray',
	'rayon',
	'reaction',
	'reading',
	'reason',
	'receipt',
	'recess',
	'record',
	'recorder',
	'rectangle',
	'red',
	'reduction',
	'refrigerator',
	'refund',
	'regret',
	'reindeer',
	'relation',
	'relative',
	'religion',
	'relish',
	'reminder',
	'repair',
	'replace',
	'report',
	'representative',
	'request',
	'resolution',
	'respect',
	'responsibility',
	'rest',
	'restaurant',
	'result',
	'retailer',
	'revolve',
	'revolver',
	'reward',
	'rhinoceros',
	'rhythm',
	'rice',
	'richard',
	'riddle',
	'rifle',
	'ring',
	'rise',
	'risk',
	'river',
	'riverbed',
	'road',
	'roadway',
	'roast',
	'robert',
	'robin',
	'rock',
	'rocket',
	'rod',
	'roll',
	'romania',
	'romanian',
	'ronald',
	'roof',
	'room',
	'rooster',
	'root',
	'rose',
	'rotate',
	'route',
	'router',
	'rowboat',
	'rub',
	'rubber',
	'rugby',
	'rule',
	'run',
	'russia',
	'russian',
	'rutabaga',
	'ruth',
	'sack',
	'sagittarius',
	'sail',
	'sailboat',
	'sailor',
	'salad',
	'salary',
	'sale',
	'salesman',
	'salmon',
	'salt',
	'sampan',
	'samurai',
	'sand',
	'sandra',
	'sandwich',
	'santa',
	'sarah',
	'sardine',
	'satin',
	'saturday',
	'sauce',
	'saudi',
	'arabia',
	'sausage',
	'save',
	'saw',
	'saxophone',
	'scale',
	'scallion',
	'scanner',
	'scarecrow',
	'scarf',
	'scene',
	'scent',
	'schedule',
	'school',
	'science',
	'scissors',
	'scooter',
	'scorpio',
	'scorpion',
	'scraper',
	'screen',
	'screw',
	'screwdriver',
	'sea',
	'seagull',
	'seal',
	'seaplane',
	'search',
	'seashore',
	'season',
	'seat',
	'second',
	'secretary',
	'secure',
	'security',
	'seed',
	'seeder',
	'segment',
	'select',
	'selection',
	'self',
	'semicircle',
	'semicolon',
	'sense',
	'sentence',
	'separated',
	'september',
	'servant',
	'server',
	'session',
	'sex',
	'shade',
	'shadow',
	'shake',
	'shallot',
	'shame',
	'shampoo',
	'shape',
	'share',
	'shark',
	'sharon',
	'shears',
	'sheep',
	'sheet',
	'shelf',
	'shell',
	'shield',
	'shingle',
	'ship',
	'shirt',
	'shock',
	'shoe',
	'shoemaker',
	'shop',
	'shorts',
	'shoulder',
	'shovel',
	'show',
	'shrimp',
	'shrine',
	'siamese',
	'siberian',
	'side',
	'sideboard',
	'sidecar',
	'sidewalk',
	'sign',
	'signature',
	'silica',
	'silk',
	'silver',
	'sing',
	'singer',
	'single',
	'sink',
	'sister',
	'size',
	'skate',
	'skiing',
	'skill',
	'skin',
	'skirt',
	'sky',
	'slash',
	'slave',
	'sled',
	'sleep',
	'sleet',
	'slice',
	'slime',
	'slip',
	'slipper',
	'slope',
	'smash',
	'smell',
	'smile',
	'smoke',
	'snail',
	'snake',
	'sneeze',
	'snow',
	'snowboarding',
	'snowflake',
	'snowman',
	'snowplow',
	'snowstorm',
	'soap',
	'soccer',
	'society',
	'sociology',
	'sock',
	'soda',
	'sofa',
	'softball',
	'softdrink',
	'software',
	'soil',
	'soldier',
	'son',
	'song',
	'soprano',
	'sort',
	'sound',
	'soup',
	'sousaphone',
	'south',
	'africa',
	'south',
	'america',
	'south',
	'korea',
	'soy',
	'soybean',
	'space',
	'spade',
	'spaghetti',
	'spain',
	'spandex',
	'spark',
	'sparrow',
	'spear',
	'specialist',
	'speedboat',
	'sphere',
	'sphynx',
	'spider',
	'spike',
	'spinach',
	'spleen',
	'sponge',
	'spoon',
	'spot',
	'spring',
	'sprout',
	'spruce',
	'spy',
	'square',
	'squash',
	'squid',
	'squirrel',
	'stage',
	'staircase',
	'stamp',
	'star',
	'start',
	'starter',
	'state',
	'statement',
	'station',
	'statistic',
	'steam',
	'steel',
	'stem',
	'step',
	'steven',
	'stew',
	'stick',
	'stinger',
	'stitch',
	'stock',
	'stocking',
	'stomach',
	'stone',
	'stool',
	'stop',
	'stopsign',
	'stopwatch',
	'store',
	'storm',
	'story',
	'stove',
	'stranger',
	'straw',
	'stream',
	'street',
	'streetcar',
	'stretch',
	'string',
	'structure',
	'study',
	'sturgeon',
	'submarine',
	'substance',
	'subway',
	'success',
	'sudan',
	'suede',
	'sugar',
	'suggestion',
	'suit',
	'summer',
	'sun',
	'sunday',
	'sundial',
	'sunflower',
	'sunshine',
	'supermarket',
	'supply',
	'support',
	'surfboard',
	'surgeon',
	'surname',
	'surprise',
	'susan',
	'sushi',
	'swallow',
	'swamp',
	'swan',
	'sweater',
	'sweatshirt',
	'sweatshop',
	'swedish',
	'sweets',
	'swim',
	'swimming',
	'swing',
	'swiss',
	'switch',
	'sword',
	'swordfish',
	'sycamore',
	'syria',
	'syrup',
	'system',
	'table',
	'tablecloth',
	'tabletop',
	'tachometer',
	'tadpole',
	'tail',
	'tailor',
	'taiwan',
	'talk',
	'tank',
	'tanker',
	'tanzania',
	'target',
	'taste',
	'taurus',
	'tax',
	'taxi',
	'taxicab',
	'tea',
	'teacher',
	'teaching',
	'team',
	'technician',
	'teeth',
	'television',
	'teller',
	'temper',
	'temperature',
	'temple',
	'tempo',
	'tendency',
	'tennis',
	'tenor',
	'tent',
	'territory',
	'test',
	'text',
	'textbook',
	'texture',
	'thailand',
	'theater',
	'theory',
	'thermometer',
	'thing',
	'thistle',
	'thomas',
	'thought',
	'thread',
	'thrill',
	'throat',
	'throne',
	'thumb',
	'thunder',
	'thunderstorm',
	'thursday',
	'ticket',
	'tie',
	'tiger',
	'tights',
	'tile',
	'timbale',
	'time',
	'timer',
	'timpani',
	'tin',
	'tip',
	'tire',
	'titanium',
	'title',
	'toad',
	'toast',
	'toe',
	'toenail',
	'toilet',
	'tomato',
	'ton',
	'tongue',
	'tooth',
	'toothbrush',
	'toothpaste',
	'top',
	'tornado',
	'tortellini',
	'tortoise',
	'touch',
	'tower',
	'town',
	'toy',
	'tractor',
	'trade',
	'traffic',
	'trail',
	'train',
	'tramp',
	'transaction',
	'transmission',
	'transport',
	'trapezoid',
	'tray',
	'treatment',
	'tree',
	'trial',
	'triangle',
	'trick',
	'trigonometry',
	'trip',
	'trombone',
	'trouble',
	'trousers',
	'trout',
	'trowel',
	'truck',
	'trumpet',
	'trunk',
	'tsunami',
	'tub',
	'tuba',
	'tuesday',
	'tugboat',
	'tulip',
	'tuna',
	'tune',
	'turkey',
	'turkey',
	'turkish',
	'turn',
	'turnip',
	'turnover',
	'turret',
	'turtle',
	'tv',
	'twig',
	'twilight',
	'twine',
	'twist',
	'typhoon',
	'tyvek',
	'uganda',
	'ukraine',
	'ukrainian',
	'umbrella',
	'uncle',
	'underclothes',
	'underpants',
	'undershirt',
	'underwear',
	'unit',
	'united',
	'kingdom',
	'unshielded',
	'use',
	'utensil',
	'uzbekistan',
	'vacation',
	'vacuum',
	'valley',
	'value',
	'van',
	'vase',
	'vault',
	'vegetable',
	'vegetarian',
	'veil',
	'vein',
	'velvet',
	'venezuela',
	'venezuelan',
	'verdict',
	'vermicelli',
	'verse',
	'vessel',
	'vest',
	'veterinarian',
	'vibraphone',
	'vietnam',
	'view',
	'vinyl',
	'viola',
	'violet',
	'violin',
	'virgo',
	'viscose',
	'vise',
	'vision',
	'visitor',
	'voice',
	'volcano',
	'volleyball',
	'voyage',
	'vulture',
	'waiter',
	'waitress',
	'walk',
	'wall',
	'wallaby',
	'wallet',
	'walrus',
	'war',
	'warm',
	'wash',
	'washer',
	'wasp',
	'waste',
	'watch',
	'watchmaker',
	'water',
	'waterfall',
	'wave',
	'wax',
	'way',
	'wealth',
	'weapon',
	'weasel',
	'weather',
	'wedge',
	'wednesday',
	'weed',
	'weeder',
	'week',
	'weight',
	'whale',
	'wheel',
	'whip',
	'whiskey',
	'whistle',
	'white',
	'wholesaler',
	'whorl',
	'wilderness',
	'william',
	'willow',
	'wind',
	'windchime',
	'window',
	'windscreen',
	'windshield',
	'wine',
	'wing',
	'winter',
	'wire',
	'wish',
	'witch',
	'withdrawal',
	'witness',
	'wolf',
	'woman',
	'women',
	'wood',
	'wool',
	'woolen',
	'word',
	'work',
	'workshop',
	'worm',
	'wound',
	'wrecker',
	'wren',
	'wrench',
	'wrinkle',
	'wrist',
	'writer',
	'xylophone',
	'yacht',
	'yak',
	'yam',
	'yard',
	'yarn',
	'year',
	'yellow',
	'yew',
	'yogurt',
	'yoke',
	'yugoslavian',
	'zebra',
	'zephyr',
	'zinc',
	'zipper',
	'zone',
	'zoo',
	'zoology'];
</script>
</form>
</body>
</html>
